如何零基础自学 Python ?
如何零基础自学 Python ?
文中大量干货
本文略长,干货满满,具体阅读时间不详....
1
前言
这两天组织了一个 Python 学习群,跟小伙伴儿们大致上聊了聊,有在职哒,有在读哒,大家的学习意识都很高。最近又有不少读者新关注了本号,相信不少同学都应该是初学者,那么今天这篇文章就是对初学者的一篇学习资料分享与总结!
还有想加入 Python 学习群的同学不要着急,后续还会慢慢加的,第一期的群暂时维护一个小群体(9人已满)...后续每期的活动会继续拉进人!耐心等待....
2
简单介绍下笔者的自学之路
起初学习 Python 是在 2016 年,那时临近毕业,由于面临着找工作的不确定性,便学习了相关的网络安全知识,此时初识 Python 。
在正式工作之后,遇到了各种手工,重复性的工作,例如操作excel、操作网页去录相关系统信息等,于是便想起了 Python 这门便捷性语言,自学了一段时间后,发现上手比较快,将其利用在了自己的工作中,减轻了不少所谓程序猿的体能劳动力,实现了不少自动化的小工具。
因为有 Java 相关的基础在,所以个人感觉学习 Python 怎么用,是非常容易的!但是随着后续时间的推移,越来越觉得基础非常重要,能强烈的感觉到缺少系统性的细节知识,故去慕课网系统性学习了一番,有了此份学习笔记,在个人公众号里,将之命名为 Python 小课堂!
通过自己边学习边总结的文章,希望也能够帮助想学习 Python 的入门者快速入门,完成自己的目标!
后台回复:【小课堂】,获取本系列文章整理好的的在线网页版,电脑上学习时比较舒服!
3
如何 0 基础自学 Python ?
在计算机科学领域里,涉及到的知识点非常多,其学科本身就是一个非常庞大的体系。而对于没有接触过编程的同学来说,经常会找不到学习的方向,或者说,不懂得如何进行高效的系统性学习。
生在互联网时代的我们非常幸福,因为现在网上已经有许多优秀的前辈们为后来者奠定了好的基础,通过自身不断地坚持,高自律性,完全可以踏入编程世界。
学习本身是有相通性的,就像笔者上面说到的,因为当初自学过 Java,所以在学 Python 并不费力,编程语言之间的知识许多都是相通的!那么身为 0 基础的你,应该如何自学呢?
首先,来谈谈自学时应有的两个精神品质:坚持与自律。
不知道大家有没有听说过一句话:“在牛逼的梦想,也扛不住煞笔一样的坚持!” 虽然看上去很毒鸡汤,但确实是真谛。给大家讲个真实的故事,就是我自己。(记得曾经在去年的某一篇文章里简单的写过自身学习编程的事情。)
还记得当年高考完,以北京市二本线最低分的分数,勉勉强强上了个北京的二本院校,这真算得上是老天爷的眷顾了。。。接下来为了释放高中积压的压力,开始了“计算机系”中的疯玩计划。
熟悉我的大学同学都知道,大学四年时间,前三年爽爽的玩了三年。大部分时间就是在玩游戏。第一年打了一年 dota1,第二年打了一年 lol,第三年打了一年dota2。后来在学校组织的一次专业实习活动中,意识到不能在这么浑浑噩噩下去了,碰巧是那次实习,开启了人生的编程之路。
首先我做的第一件事就是明确目标,希望找一个 Java 方向的工作。在大三下学期的暑假里,以这个目标为主,每天早上 6:30 起床,7:00 开始 0 基础的自学编程之路,抛去吃饭上厕所的时间,一直学到下午 13:00 左右。后面的三个月,保持每天如此的高度自律性,从当初 0 基础的小白算是入了门。正是这份自律性,确实帮我找到了工作。
大学中第二件事,便是四级英语考试了。计算机系学生的优势就是大一就可以考英语四级。当时哪里顾得上英语?高中一考完果断全放弃,后来听别人说,找工作四级很重要,有的地方需要四级证明。(对于计算机系找工作,真的没那么重要,有些国企可能会要) 于是这一考就是四年,每个学期一次,我坚持了3年半,每年2次考试的机会,一直就没考过,其中最惨的一次是考了 424 分(425分给证)。最后在不懈的坚持下,终于在大学第7次考试考过了四级。。。都是辛酸史。。。
上面举了我自己的两个例子,无非想说的就是在学习的道路上,坚持与自律是必不可少的精神,学习 Python 也是一样的!
而在学习 Python 中,除了以上说到的两种必备精神外,还有些软技能是可以提高学习效率的,下面结合自己学习经验分享下。
1. 明确学习目标,了解学习语言的发展背景
学习要有目的性,盲目的学习只能说是浪费精力与时间。
许多初学者在选定编程语言后,会在网上收集一堆网课或是书籍资料,一存就是几个GB的百度网盘,反正越多越好,越多心里就会有一种越踏实的错觉感。但是你会慢慢的发现,存了这么多视频,根本没有那么多时间全部看完,大部分的视频仅仅是占坑罢了!
也有一些同学自律性比较高,挑出某些系列视频网课,看个前几章,然后看着看着,就坚持不下去了,学到的只是视频前奏的皮毛知识点,自己动手编程的时候,还是一脸懵逼,最终放弃了编程。就像上面提到的观点一样,盲目学习只会浪费自己的精力与时间。
笔者当初为什么选择了重拾学习 Python ?因为目的性很强,工作中遇到了烦人的琐碎重复工作,想对其自动化。此时需要选择一门编程语言,百度查调研了下,很多人推荐 Python ,其自身具有简洁的语法,适合开发小工具。所以抱着这个目的,笔者首先做的事是去了解了 Python 的发展背景。
就像负责的网课老师在开头正式讲课之前,会讲语言的发展历史。创始人是谁?名字的由来?迄今为止有多少年的存活历史了?对应的社区活跃度高不高?到现在最新的版本是多少?涉及的领域有哪些?(说白了就是,能用它干什么事情?)
曾经在小课堂开篇就写过,Python 到底可以来干什么:python小课堂00
这些问题应是在学习一门编程语言前调研清楚的,古语云:“知己知彼,才能百战百胜” 都是一个道理。拿 Python 的版本来说,假设你没有调研,你知道要学习它的 Python2 还是 Python3 吗?网上的视频资料都是有时效性的,依然一些视频采用的还是 Python2 讲解。Python2 系列在去年官方就已经放出,将在 2020 年停止维护的通知,既然这样,那学习 Python2 还有必要吗?肯定是强烈推荐学习 Python3 了呀,就不要浪费精力和时间在一个即将停止维护的版本上了。
2. 记笔记,画思维导图,查文档
记笔记是一门学文,试问在高中上学时候,为什么我们需要记笔记呢?就是因为知识量很大,不得不用笔记下来,等到用到的时候便于回顾。现在科学已经很进步了,笔记就不要采用传统的方式进行记录了,在学习的过程中,可以使用有道云笔记这样的工具来高效率记录。一边学习,一边整理输出自己的学习笔记。这样的过程就像计算机处理程序一样,输入 -> 思考 -> 输出。
给你们分享下当初学 java 时记下的笔记,类似下面:
如果有精力,可以下载一个 xmind 这样的工具,画出一个知识点的思维导图。看过笔者之前文章的,想必看到过思维导图的出现。思维导图与文字笔记最大的差别,就是架构分层性。
一份好的思维导图可以很醒目的将知识点分层展现出来,如正则表达式的文章中:
关于文档查看这项必备技能,写 Python 程序中必不可少。大部分时间都是在调用人家写好的方法或者函数。如何有效的,准确的了解你想要的参数,以及参数内容是什么?必须要学会查询文档去得到自己想要的,推荐官方文档,比较权威且具有时效性。后面会把个人认为权威的文档整理写出来。
3. 多动手,巩固基础
要明白一个道理“实践出真理”,往往许多初学者最大的问题就是:我看懂了,不用跟着敲肯定也没问题!
如果你抱有这种心理,请务必注意,多动手!即使你感觉你会了,相信我,那只是艾宾浩斯记忆曲线在作怪。
一个人刚学习时,信息输入大脑后,遗忘也就随之开始了。遗忘率随时间的流逝而先快后慢,特别是在刚刚识记的短时间里,遗忘最快,这就是著名的艾宾浩斯遗忘曲线。
刚开始学时,你会觉得百分之百会,你等过20分钟再试试,等过1个小时后试试!!!所以说,初学者一定要动手敲!只有敲才是王道!敲代码的过程中,伴随着大脑回顾的记忆与思考,有时即使照着敲,也是会发生错误的,此时正是反思的好机会!切记!!!
就像昨天有位读者正在练习,对着源代码敲了一遍,意识到了自己打一遍错误百出,这一出错,纠正之后,肯定收获也不小!所以动手非常重要!为了保护个人隐私,抹去头像了(别介意哈):
当你真正动手敲代码的时候,也许会觉得很浪费时间,但实际上这种学习方法大大提高了摄入知识的效率,以时间换空间的做法,何乐而不为呢?
4. 遇到问题时,合理的利用搜索引擎
在之前的文章中写过一篇,如何高效的利用搜索引擎。不妨去看看其中介绍的搜索引擎,你在初学过程中遇到的问题,肯定有不少前辈们早已经遇到过了。遇到问题时,首先想到的就是通过搜索引擎去解决,如果自己尽力了还是没有解决,再去请教别人。比如提问的网站,知乎、慕课网、CSDN等。。。
4
学习资源推荐
上面都是一些软技能的干货分享,希望可以帮到正在入门学习 Python 的小伙伴们,下面是整理好的一些资料分享。
1. Python 零基础类相关
入门最快的方法个人认为是看系统性的视频,书籍是为了后续深入而进阶用到的,所以笔者不会上来就推荐书籍。(当然你可以反驳,毕竟每个人不一样,有人看视频学习快,有人看书快)
IT相关良心网站,慕课网:
Ø 初识Python (廖雪峰老师主讲):
https://www.imooc.com/learn/177
Ø Python进阶 (廖雪峰老师主讲):
https://www.imooc.com/learn/317
Ø Python3学习文档 (廖雪峰老师个人站):
https://www.liaoxuefeng.com
入门并不需要太多其余视频了,看视频时可以结合廖雪峰老师的个人网站去看文章。慕课网上每过一章节都有课后的小练习,强烈推荐新手朋友们动手实践,软技能中说到的,实践出真理!
不难发现,笔者推荐的都是一个讲师的系列教程。因为自学入门时,一定要有系统性,以及对讲师思维的跟随性。如果今天看这个老师的基础视频,明天又看那个老师的基础视频,最后很容易打磨掉自己的耐心,原地踏步,每个老师讲课的思路都是不一样的。认准一个官方公认即可。
2. Python 爬虫方向
Python 爬虫入门推荐:
一旦度过了初学者的门槛,接下来就是要做小项目去进行练手。首选的就是 Python 爬虫方向的知识。不少人学习 Python 都是奔着爬虫去的,其实不仅仅 Python 可以写爬虫,其它语言也都是可以写的,编程重要的是思维。
学习爬虫方向,你需要了解爬取网站的原理,因为爬虫就是通过程序去采集网页上你想要的信息,所以从网页说起吧。通俗的举例,你可以将网页想象成一张大画布,如果要在这个画布上作画,一般都是先有骨架,在对其进行细节修改,填充色彩之类的。
骨架对应的就是 HTML 相关的知识,细节、色彩则是 Js、css等。我们学爬虫关注的是最终显示的信息,故 css 可以不必了解。同时现在多数网页数据通过 JSON 来进行“画布”的动态填充。
HTML是用来描述网页的一种语言。
JSON是一种轻量级的数据交换格式。
CSS决定了网页的样式。
JS决定了网页与用户的互动,是一门语言。
所以学习爬虫之前,关于网页信息相关需要了解的是:
Ø HTML教程式文档:
http://www.w3school.com.cn/html/index.asp
Ø 菜鸟文档式 JSON:
http://www.runoob.com/json/json-intro.html
关于 JSON ,可以回顾这篇文章 python小课堂25 - 你真的了解JSON嘛?
了解网页的基础架构后,你还需要了解一点点 http 协议的小知识。详见:
Ø 关于 HTTP 协议,一篇就够了:
https://www.cnblogs.com/ranyonsue/p/5984001.html
开题就说过,计算机学科是一门庞大的体系,要了解的知识非常多,在了解以上知识点后,接下来终于可以用我们的 Python 进行爬虫小项目开始了,此时推荐的是中国慕课大学的公开课,从中你会学到requests库、beautifulsoup库、re库的使用,需要注意的是第四周的课程可以不看,讲的是 scrapy 爬虫框架的使用,入门不需要看此门课程,后续有需要可以回来看。相关资料如下:
Ø 北理工的嵩天老师 Python 爬虫课程:
https://www.icourse163.org/learn/BIT-1001870001?tid=1003245012#/learn/content
Ø requests库中文官方文档:
http://docs.python-requests.org/zh_CN/latest/
Ø BeautifulSoup库中文官方文档:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
如果你能静心的学到这里并且达到掌握的地步,恭喜你,对于 Python 这门语言来说,已经算是一个合格的入门级 Pythoner 了。
来条分割线,写的太长了....
Python 爬虫进阶推荐:
完成以上说的仅仅是在爬虫路上的初次冒险,随着早期知乎以及各大论坛被爬,发展到现在各大网站已经有了良好的反爬(防止爬虫爬取信息,简称反爬)机制。此时到了一个进阶阶段,你需要了解一些反爬机制,从而实现反反爬。
到此境界,首要学习应该从视频转向了,以书籍为主,辅以视频。结合笔者看过的爬虫系列,这里推荐的是崔庆才的《Python3网络爬虫开发实战》。崔大师算是爬虫届的过来人了,感兴趣的可以了解下,非常年轻的一个博主,很厉害。早期写爬虫博客,后续整理成了这本书籍,资源如下:
Ø 《Python3网络爬虫开发实战》pdf,公众号后台回复:网络爬虫开发实战 ,即可获得百度云资源。
Ø 崔庆才相关爬虫教程视频:
https://www.bilibili.com/video/av37497888?from=search&seid=3345792040934280385
在这个学习过程中,你会学习到各种爬虫框架,以及反反爬的手法。爬虫是有时效性的,所以部分案例完全有可能出现失败的情况。
3. Python 后台web方向
笔者早期就是做 Java web 方向开发的,开始觉得没有必要学习相关知识,但是由于前一阵有些想法,想结合微信小程序做一些好玩的事情,选择 Java 进行开发太笨重了,所以现在也在学习 Python web方向的知识,目前框架只学了 Flask 一个,因为非常轻巧,结合小程序开发起来上手应该非常快。
对web后端感兴趣的,资料如下:
Ø flask中文文档官网:
http://docs.jinkan.org/docs/flask/
Ø flask sql数据库插件 SQLAlchemy 中文文档官网:
http://www.pythondoc.com/flask-sqlalchemy/quickstart.html
Ø flask orm自动生成model层对象,项目官方地址:
https://github.com/ksindi/flask-sqlacodegen
4. Python 日常好玩的练手小项目
实验楼相对慕课网而言,适合想找快速练手项目的一些人。上面充满着各种好玩的项目:
Ø 实验楼搜索 Python
https://www.shiyanlou.com/search?category=course&search=python
5. Python 面试题相关资源
推荐一个,目前在 github 上高达 9k star,笔者曾经看过一些,对找工作的人非常有帮助,地址如下:
Ø Python面试题
https://github.com/taizilongxu/interview_python
6. 推荐书籍
知乎上有一篇文章,介绍了 Python 官方推荐的书籍,感兴趣可以看下:
Ø 知乎官方书籍推荐:
https://zhuanlan.zhihu.com/p/34378860
7. 其他方向
在早期的开篇小课堂中提到过,Python 涉及的领域非常多,但是笔者结合自身而言,就涉及到上面的,所以其它领域不了解,也就不做推荐了。。。望谅解!
5
结语
本篇文章篇幅略长,笔者认为还是挺干货的,粗略的记录下用时,大概花了 8 小时(一晚上 + 一下午)完成的一篇自学性资料文章,希望能帮到那些正在初学入门 Python 的朋友们!
由于本文中含有大部分链接,所以特意贴心的想了一下,将本文整理到了 word 中,便于电脑打开链接。公众号后台回复:零基础自学 即可获得。
如果您觉得本篇文章确实帮到了您,欢迎点赞转发,将好的资源分享给身边正在学习 Python 的朋友们!您最大的支持,就是笔者写下去的动力!
至此完!
长按关注
公众号名称:咪哥杂谈
一个咪咪怪的公众号
长按二维码关注哦!